home *** CD-ROM | disk | FTP | other *** search
/ Winzipper / Winzipper_ISO.iso / nt4.0 server / DRVLIB.NIC / BLUTOK / OEMSETUP.INF < prev   
INI File  |  1996-07-31  |  34KB  |  1,028 lines

  1. ;/****************************************************************************/
  2. ;/* oemsetup.inf                                                             */
  3. ;/*                                                                          */
  4. ;/* installation script for Madge Blue+ Network Adapter Cards                */
  5. ;/* version 1.06                                                             */
  6. ;/* August 1995                                                              */
  7. ;/****************************************************************************/
  8.  
  9. ;/****************************************************************************/
  10. ;/* Required section 1 - [Identify]                                          */
  11. ;/****************************************************************************/
  12.  
  13. [Identify]
  14.     read-syms Identification
  15.     set Status     = STATUS_SUCCESSFUL
  16.     set Identifier = $(OptionType)
  17.     set Media      = #("Source Media Descriptions", 1, 1)
  18.     Return $(Status) $(Identifier) $(Media)
  19.  
  20.  
  21. ;/****************************************************************************/
  22. ;/* [Identify] Support sections                                              */
  23. ;/****************************************************************************/
  24.  
  25. [Identification]
  26.     OptionType = NetAdapter
  27.  
  28.  
  29. ;/****************************************************************************/
  30. ;/* Required section 2 - [ReturnOptions]                                     */
  31. ;/****************************************************************************/
  32.  
  33. [ReturnOptions]
  34.     set Status         = STATUS_FAILED
  35.     set OptionList     = {}
  36.     set OptionTextList = {}
  37.     set LanguageList = ^(LanguagesSupported, 1)
  38.     Ifcontains(i) $($0) in $(LanguageList)
  39.     ifstr(i) $($1) == ""
  40.        goto returnoptions
  41.     endif
  42.     set PlatformList = ^(PlatformsSupported, 1)
  43.     Ifcontains(i) $($1) in $(PlatformList)
  44.        goto returnoptions
  45.     else
  46.        set Status = STATUS_NOTSUPPORTED
  47.        goto finish_ReturnOptions
  48.     endif
  49.     else
  50.     set Status = STATUS_NOLANGUAGE
  51.     goto finish_ReturnOptions
  52.     endif
  53. returnoptions = +
  54.     set OptionList     = ^(Options, 1)
  55.     set OptionTextList = ^(OptionsText$($0), 1)
  56.     set Status         = STATUS_SUCCESSFUL
  57. finish_ReturnOptions = +
  58.     Return $(Status) $(OptionList) $(OptionTextList)
  59.  
  60.  
  61. ;/****************************************************************************/
  62. ;/* [ReturnOptions] Support sections                                         */
  63. ;/****************************************************************************/
  64.  
  65. [Options]
  66.     BLUTOK
  67.  
  68. ; PlatformsSupported appears to support an optional second parameter to
  69. ; the [ReturnOptions] section.
  70.  
  71. [PlatformsSupported]
  72.     ISA
  73.     EISA
  74.     MCA
  75.  
  76.  
  77. ;/****************************************************************************/
  78. ;/* Required section 3 - [InstallOption]                                     */
  79. ;/****************************************************************************/
  80.  
  81. [InstallOption]
  82.     set Option   = $($1)
  83.     set SrcDir   = $($2)
  84.     set AddCopy  = $($3)
  85.     set DoCopy   = $($4)
  86.     set DoConfig = $($5)
  87.  
  88.     set !DebugOutputControl = 1
  89.  
  90.     ; Check language is OK
  91.     set LanguageList = ^(LanguagesSupported, 1)
  92.     Ifcontains(i) $($0) NOT-IN $(LanguageList)
  93.     Return STATUS_NOLANGUAGE
  94.     endif
  95.  
  96.     Debug-Output "BLUTOK.INF: STF_CWDDIR is: "$(!STF_CWDDIR)
  97.     set-subst LF = "\n"
  98.     read-syms GeneralConstants
  99.     read-syms FileConstants
  100.  
  101.     ;    Shell $(UtilityInf), GetBindingInfo, "IBM"
  102.     ;    ifint $($ShellCode) != $(!SHELL_CODE_OK)
  103.     ;        Debug-Output "ShellCode error: cannot get an error string."
  104.     ;        goto ShellCodeError
  105.     ;    endif
  106.     ;    set NetRuleSoftwareBindable = $($R1)
  107.  
  108.     ; set NetRuleSoftwareBindable - can't use GetBindingInfo without MS help!
  109.     set NetRuleSoftwareBindable = {"blutokDriver blutokAdapter non exclusive 100"}
  110.  
  111.     read-syms DialogConstants$($0)
  112.     ifstr(i) $(!NTN_Origination) == "NCPA"
  113.     set Continue = $(OK)
  114.     endif
  115.  
  116.     read-syms FileConstants$($0)
  117.  
  118.     detect date
  119.  
  120.     sethelpfile blutok.hlp $(BLUE_HELP_BASE) $(BLUE_HELP_LIMIT)
  121.  
  122.     set-title  $(FunctionTitle)
  123.     set to   = Begin
  124.     set from = Begin
  125.     set CommonStatus = STATUS_SUCCESSFUL
  126.     EndWait
  127.  
  128. Begin = +
  129.     set ActivateDetection = FALSE
  130.  
  131.     Ifstr(i) $(!NTN_InstallMode) == deinstall
  132.     set StartLabel = removeadapter
  133.     else-Ifstr(i) $(!NTN_InstallMode) == bind
  134.     set StartLabel = bindingadapter
  135.     else-Ifstr(i) $(!NTN_InstallMode) == Update
  136.     set StartLabel = UpgradeSoftware
  137.     else-Ifstr(i) $(!NTN_InstallMode) == configure
  138.     set CommonStatus = STATUS_REBOOT
  139. ;        set ActivateDetection = TRUE
  140.     set StartLabel = configureadapter
  141.     Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
  142.         Debug-Output "Cannot configure the IBM software."
  143.         Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
  144.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  145.         Debug-Output "ShellCode error: cannot get an error string."
  146.         goto ShellCodeError
  147.         endif
  148.         set Error = $($R0)
  149.         set from = end
  150.         set to = end
  151.         goto nonfatalinfo
  152.     endif
  153.     else
  154.     set StartLabel = installadapter
  155.     set OEM_ABANDON_OPTIONS  = {}
  156.     set OEM_ABANDON_SOFTWARE = FALSE
  157.     set OEM_ABANDON_ON       = TRUE
  158. ; Let's not do any detection just yet...
  159. ;        set ActivateDetection    = TRUE
  160.     endif
  161.  
  162.     set IOBaseAddress = 1
  163.  
  164.     Debug-Output "BluTok.INF: =================================================="
  165.     Debug-Output "BluTok.INF: STF_CWDDIR is: "$(!STF_CWDDIR)
  166.     Debug-Output "BluTok.INF: STF_LANGUAGE is: "$(!STF_LANGUAGE)
  167.     Debug-Output "BluTok.INF: Option is: "$(Option)
  168.     Debug-Output "BluTok.INF: NTN_ORIGINATION is: "$(!NTN_Origination)
  169.     Debug-Output "BluTok.INF: !STF_NCDETECT  is: "$(!STF_NCDETECT)
  170. ;    Debug-Output "BluTok.INF: !STF_NCOPTION  is: "$(!STF_NCOPTION)
  171. ;    Debug-Output "BluTok.INF: !STF_NCDETCARD is: "$(!STF_NCDETCARD)
  172. ;    Debug-Output "BluTok.INF: !STF_NCDETINFO is: "$(!STF_NCDETINFO)
  173.     Debug-Output "BluTok.INF: =================================================="
  174.  
  175.     Set DetectedCard = FALSE
  176.     Ifstr(i) $(ActivateDetection) != TRUE
  177.     Goto skipdetection
  178.     Endif
  179.     Set TypeList = {{IOADDR, IOADDR_Addr_List, IOBaseAddress}}
  180.     Debug-Output "BluTok.INF: Calling Param_BuildTypeLists"
  181.     Shell $(ParamInf) Param_BuildTypeLists $(Option) $(TypeList)
  182.     Set Status = $($R0)
  183.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  184.     Goto fataldetect
  185.     Endif
  186.     Debug-Output "BluTok.INF: Calling Param_SetDefaults"
  187.     Shell $(ParamInf) Param_SetDefaults {}
  188.     Ifstr(i) $(!STF_NCDETECT) == YES
  189.     Ifstr(i) $(!STF_NCOPTION) == $(Option)
  190.        Set DetectedCard = TRUE
  191.        Debug-Output "BluTok.INF: Setting DetectedCard to TRUE"
  192.     Endif
  193.     Endif
  194.  
  195. skipdetection =+
  196.     set from = $(fatal)
  197.     set to = $(fatal)
  198.     goto $(StartLabel)
  199.  
  200. installadapter = +
  201.     ; ProductKeyName = \HKEY_LOCAL_MACHINE\SOFTWARE\Madge\BluTok\CurrentVersion
  202.     OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
  203.     Ifstr $(KeyProduct) != $(KeyNull)
  204.     CloseRegKey $(KeyProduct)
  205.     ifstr(i) !(NTN_RegBase) == $(ProductKeyName)
  206.        Shell $(UtilityInf), VerExistedDlg, $(ProductSoftwareTitle),+
  207.            $(ProductVersion)
  208.        ifint $($ShellCode) != $(!SHELL_CODE_OK)
  209.            Debug-Output "ShellCode error: cannot get an error string."
  210.            goto ShellCodeError
  211.        endif
  212.        goto end
  213.     else
  214.        Shell $(UtilityInf), CardExistedDlg
  215.        ifint $($ShellCode) != $(!SHELL_CODE_OK)
  216.            Debug-Output "ShellCode error: cannot get an error string."
  217.            goto ShellCodeError
  218.        endif
  219.        ifstr(i) $($R1) != "OK"
  220.            set CommonStatus = STATUS_USERCANCEL
  221.            goto end
  222.        endif
  223.        set OldVersionExisted = $(TRUE)
  224.     endif
  225.     endif
  226.     Ifstr(i) $(DetectedCard) != TRUE
  227.     Goto adaptersetup
  228.     Endif
  229.     StartWait
  230.     Shell $(ParamInf) Param_QueryCard $(!STF_NCDETCARD)
  231.     EndWait
  232.     Ifstr(i) $($R0) != STATUS_SUCCESSFUL
  233.     Goto adaptersetup
  234.     Endif
  235.     Set DetectedParams = $($R1)
  236.     Debug-Output "BluTok.INF: Calling Param_SetDefaults to merge detected params"
  237.     Shell $(ParamInf) Param_SetDefaults $(DetectedParams)
  238.     goto adapteroptions
  239.  
  240. configureadapter = +
  241.     Ifstr $(KeyProduct) == $(KeyNull)
  242.     OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_RegBase) $(MAXIMUM_ALLOWED) KeyProduct
  243.     Ifstr $(KeyProduct) == $(KeyNull)
  244.         set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
  245.         Debug-Output "Cannot find component product key"
  246.         goto fatalregistry
  247.     Endif
  248.     Endif
  249.     Debug-Output "BluTok.INF: Shelling to FindService"
  250.     Shell $(UtilityInf) FindService, $(KeyProduct)
  251.     Ifint $($ShellCode) != $(!SHELL_CODE_OK)
  252.     Debug-Output "BluTok.INF: FindService shell failure"
  253.     Goto ShellCodeError
  254.     Endif
  255.     Ifstr(i) $($R0) != NO_ERROR
  256.     Debug-Output "BluTok.INF: FindService Shell error: "$($R0)
  257.     Goto fatalregistry
  258.     endif
  259.     set KeyParameters = $($R2)
  260.     CloseRegKey $($R1)
  261.     Ifstr $(KeyParameters) == $(KeyNull)
  262.     set RegistryErrorIndex = "CANNOT_FIND_COMPONENT_SERVICE"
  263.     Debug-Output "Cannot find component service"
  264.     goto fatalregistry
  265.     endif
  266.     set OldVersionExisted = $(TRUE)
  267.     set ValueName = ""
  268.     set ValueData = ""
  269.     set ValueStr  = ""
  270.     set ValueList = {}
  271.     EnumRegValue $(KeyParameters) ValueList
  272.     ForListDo $(ValueList)
  273.     set ValueItem = $($)
  274.     set ValueName = *($(ValueItem),1)
  275.     set ValueData = *($(ValueItem),4)
  276.     Ifstr(i) $(ValueName) == "IOBaseAddress"
  277.        set IOBaseAddress = $(ValueData)
  278.     else-Ifstr(i) $(ValueName) == "NetworkAddress"
  279.        set NetworkAddress = $(ValueData)
  280.     else-ifstr(i) $(ValueName) == "BusType"
  281.         set BusInterfaceType = $(ValueData)
  282.     else-ifstr(i) $(ValueName) == "BusNumber"
  283.         set BusNumber = $(ValueData)
  284.     else-ifstr(i) $(ValueName) == "MaxFrameSize"
  285.         set MaxFrameSize = $(ValueData)
  286.     endif
  287.     EndForListDo
  288.     ifstr(i) $(IOBaseAddress) == ""
  289.     set IOBaseAddress = 1
  290.     endif
  291.  
  292. adaptersetup =+
  293. ;    Shell $(ParamInf) Param_ParameterConfidence
  294. ;    Ifstr(i) $($R0) != STATUS_SUCCESSFUL
  295. ;        Debug-Output "BluTok.INF: parameter confidence too low to bypass configuration"
  296. ;        Goto adapteroptions
  297. ;    Endif
  298. ;    Ifstr(i) $(DetectedCard) == TRUE
  299. ;        Ifstr(i) $(!STF_INSTALL_MODE) != CUSTOM
  300. ;            Goto adapterverify
  301. ;        Endif
  302. ;    Endif
  303.  
  304.     goto adapteroptions
  305.  
  306. adapteroptions = +
  307.     set from = adapteroptions
  308.     ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
  309.     ifstr(i) $(!AutoNetInterfaceType) != ""
  310.         set BusInterfaceType = $(!AutoNetInterfaceType)
  311.     else
  312.         set BusInterfaceType = 1    
  313.     endif
  314.     ifstr(i) $(!AutoNetBusNumber) != ""
  315.         set BusNumber = $(!AutoNetBusNumber)
  316.     else
  317.         set BusNumber = 0
  318.     endif
  319.     goto adapterverify
  320.     endif
  321.  
  322.     ; We need our own installation dll for resources...
  323.  
  324.     ifint $(OldVersionExisted) != $(TRUE)
  325.  
  326.     shell $(UtilityInf) DoAskSource $(!STF_CWDDIR) $(SrcDir) NO
  327.  
  328.     ifint $($ShellCode) != S(!SHELL_CODE_OK)
  329.        goto ShellCodeError
  330.     else-ifstr(i) $($R0) == STATUS_FAILED
  331.         shell $(UtilityInf) RegistryErrorString ASK_SOURCE_FAIL
  332.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  333.         goto ShellCodeError
  334.         endif
  335.         set Error = $($R0)
  336.         goto fatal
  337.     else-ifstr(i) $($R0) == STATUS_USERCANCEL
  338.         goto successful
  339.     endif
  340.  
  341.     Set SrcDir = $($R1)
  342.  
  343.     ; Now we could install the DLL here, but we might as well do it all at
  344.     ; once when we install the driver... This might upset the help though...
  345.  
  346.     LoadLibrary #("Source Media Descriptions", 1, 1) +
  347.         $(SrcDir)\blutok.dll BluHandle
  348.     else
  349.     LoadLibrary "" $(!STF_WINDOWSSYSPATH)\blutok.dll BluHandle
  350.     endif
  351.  
  352.     ; Set input variables for the dialog
  353.  
  354.     set RadioIn = {$(IOBaseAddress)}
  355.     read-syms FileDependentDlg$(!STF_LANGUAGE)
  356.  
  357.     set oldNetworkAddress = $(NetworkAddress)
  358.     set oldMaxFrameSize   = $(MaxFrameSize)
  359.  
  360.     ; Display the dialog and process result
  361.  
  362. display_dialog = +
  363.     ui start "InputDlg" $(BluHandle)
  364.  
  365.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  366.     set IOBaseAddress  = *($(RadioOut),1)
  367.     set NetworkAddress = *($(EditTextOut),1)
  368.     set MaxFrameSize   = *($(EditTextOut),2)
  369.     else-ifstr(i) $(DLGEVENT) == "BACK"
  370.     set CommonStatus = STATUS_USERCANCEL
  371.     Debug-Output "Action: exit. Bye."
  372.     ui pop 1
  373.     goto end
  374.     else
  375.     ui pop 1
  376.     Debug-Output "Action: unknown. Bye."
  377.     goto end
  378.     endif
  379.  
  380.     ; Sanity check the values we've been given
  381.  
  382.     ifint $(MaxFrameSize) > 17839
  383.     set Error = "Maximum frame size must be less than 17839"
  384.     set from = display_dialog
  385.     goto nonfatalinfo
  386.     endif
  387.  
  388.     ifint $(MaxFrameSize) != 0
  389.     ifint $(MaxFrameSize) < 96
  390.         set Error = "Maximum frame size must be greater than 96"
  391.         set from = display_dialog
  392.         goto nonfatalinfo
  393.     endif
  394.     endif
  395.  
  396.     ifstr $(NetworkAddress) != ""
  397.  
  398.     set FLibraryErrCtl = 1
  399.     LibraryProcedure Result $(BluHandle) BlueCheckAddress $(NetworkAddress)
  400.     set FLibraryErrCtl = 0
  401.  
  402.     ifstr(i) *($(Result),1) != STATUS_SUCCESS
  403.         set Error = $(Result)
  404.         set from = display_dialog
  405.         goto nonfatalinfo
  406.     endif
  407.  
  408.     set NetworkAddress = *($(Result),2)
  409.  
  410.     endif
  411.  
  412.     ui pop 1
  413.  
  414.     ifstr(i) $(!STF_NCDETINFO) == {}
  415.     Shell $(UtilityInf),GetBusTypeDialog,$(ProductHardwareDescription) $(BusInterfaceType) $(BusNumber)
  416.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  417.         Debug-Output "ShellCode error."
  418.         goto ShellCodeError
  419.     endif
  420.     set BusInterfaceType = $($R1)
  421.     set BusNumber = $($R2)
  422.     else
  423.     set BusInterfaceType = *($(!STF_NCDETINFO),5)
  424.     set BusNumber = *($(!STF_NCDETINFO),6)
  425.     endif
  426.  
  427. adapterverify =+
  428.     Ifstr(i) $(DetectedCard) != TRUE
  429.     Goto skipoptions
  430.     Endif
  431.     Debug-Output "BluTok.INF: Calling Param_VerifyCard"
  432.     Shell $(ParamInf) Param_VerifyCard $(!STF_NCDETCARD)
  433.     Ifstr(i) $($R0) == STATUS_SUCCESSFUL
  434.     Debug-Output "BluTok.INF: Param_VerifyCard succeeded"
  435.     Goto skipoptions
  436.     Endif
  437.     Set from = adapteroptions
  438.     Set to = skipoptions
  439.     Shell $(UtilityInf),RegistryErrorString,VERIFY_WARNING
  440.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  441.     Debug-Output "ShellCode error: cannot get an error string."
  442.     goto ShellCodeError
  443.     endif
  444.     set Error = $($R0)
  445.     Goto Warning
  446.  
  447. skipoptions =+
  448.     ifint $(OldVersionExisted) == $(TRUE)
  449.     ifstr(i) $(!NTN_InstallMode) == configure
  450.         goto writeparameters
  451.     endif
  452.     endif
  453.     StartWait
  454.     ifint $(OldVersionExisted) == $(FALSE)
  455.  
  456.     ; The software has never been installed before, so first copy from disk
  457.  
  458.     ifstr(i) $(!NTN_InstallMode) == "install"
  459.        
  460.        ; No need to ask for source directory - already done that above...
  461.  
  462.        install "Install-Option"
  463.  
  464.        ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
  465.           Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
  466.           ifint $($ShellCode) != $(!SHELL_CODE_OK)
  467.           goto ShellCodeError
  468.           endif
  469.           set Error = $($R0)
  470.           goto fatal
  471.        endif
  472.     endif
  473.  
  474.     ; We have loaded the software - now make the correct registry entries
  475.  
  476.     Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
  477.         $(ProductSoftwareName), +
  478.         $(ProductSoftwareName), +
  479.         $(ProductSoftwareTitle), $(STF_CONTEXTINFNAME), +
  480.         $(ProductSoftwareImagePath), "kernel", "NDIS", {}, "",+
  481.         $(NetEventDLL)
  482.     Set OEM_ABANDON_SOFTWARE = TRUE
  483.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  484.         Debug-Output "ShellCode error"
  485.         goto ShellCodeError
  486.     endif
  487.     set RegistryErrorIndex = $($R0)
  488.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  489.         EndWait
  490.         Debug-Output "Registry error: add software components"
  491.         CloseRegKey $($R1)
  492.         CloseRegKey $($R2)
  493.         CloseRegKey $($R3)
  494.         CloseRegKey $($R4)
  495.         CloseRegKey $($R5)
  496.         goto fatalregistry
  497.     endif
  498.     Set SoftProductKey      = $($R1)
  499.     Set SoftNetRuleKey      = $($R2)
  500.     Set SoftServiceKey      = $($R3)
  501.     Set SoftParameterKey    = $($R4)
  502.     Set SoftLinkageKey      = $($R5)
  503.     set NewValueList = {{SoftwareType,$(NoTitle),$(!REG_VT_SZ),$(SoftwareType)},+
  504.                {MajorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMajorVersion)},+
  505.                {MinorVersion,$(NoTitle),$(!REG_VT_DWORD),$(ProductMinorVersion)},+
  506.                {Title,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareTitle)},+
  507.                {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareDescription)},+
  508.                {ServiceName,$(NoTitle),$(!REG_VT_SZ),$(ProductSoftwareName)},+
  509.                {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
  510.     Shell  $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
  511.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  512.         Debug-Output "ShellCode error."
  513.         goto ShellCodeError
  514.     endif
  515.     set RegistryErrorIndex = $($R0)
  516.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  517.         EndWait
  518.         Debug-Output "Resgitry error: add value list."
  519.         CloseRegKey $(SoftProductKey)
  520.         CloseRegKey $(SoftNetRuleKey)
  521.         CloseRegKey $(SoftServiceKey)
  522.         CloseRegKey $(SoftParameterKey)
  523.         CloseRegKey $(SoftLinkageKey)
  524.         goto fatalregistry
  525.     endif
  526.     set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)},+
  527.                 {use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
  528.                 {bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)}, +
  529.                 {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)}, +
  530.                 {bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)}, +
  531.                 {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
  532.     Shell  $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
  533.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  534.         Debug-Output "ShellCode error."
  535.         goto ShellCodeError
  536.     endif
  537.     set RegistryErrorIndex = $($R0)
  538.     CloseRegKey $(SoftProductKey)
  539.     CloseRegKey $(SoftNetRuleKey)
  540.     CloseRegKey $(SoftServiceKey)
  541.     CloseRegKey $(SoftParameterKey)
  542.     CloseRegKey $(SoftLinkageKey)
  543.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  544.         EndWait
  545.         Debug-Output "Resgitry error: add value list."
  546.         goto fatalregistry
  547.     endif
  548.     endif
  549.  
  550.     ; Installing new software converges with just installing new hardware here
  551.  
  552.     Shell $(UtilityInf), AddHardwareComponent, $(ProductHardwareName),$(STF_CONTEXTINFNAME),$(ProductKeyName)
  553.     ifint $($R4) != -1
  554.     Set OEM_ABANDON_OPTIONS = >($(OEM_ABANDON_OPTIONS), $(!NTN_SoftwareBase)"\Microsoft\Windows NT\CurrentVersion\NetworkCards\"$($R4))
  555.     endif
  556.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  557.     Debug-Output "Cannot add hardware component"
  558.     goto ShellCodeError
  559.     endif
  560.     set RegistryErrorIndex = $($R0)
  561.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  562.     EndWait
  563.     Debug-Output "Registry error: add hardware component"
  564.     CloseRegKey $($R1)
  565.     CloseRegKey $($R2)
  566.     CloseRegKey $($R3)
  567.     goto fatalregistry
  568.     endif
  569.     set KeyParameters = $($R3)
  570.     set KeyAdapterRules = $($R2)
  571.     set AdapterNumber = $($R4)
  572.     set NewValueList = {{Manufacturer,$(NoTitle),$(!REG_VT_SZ),$(Manufacturer)},+
  573.                {Title,$(NoTitle),$(!REG_VT_SZ),"["$($R4)"] "$(ProductHardwareTitle)},+
  574.                {Description,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareDescription)},+
  575.                {ProductName,$(NoTitle),$(!REG_VT_SZ),$(ProductHardwareName)},+
  576.                {ServiceName,$(NoTitle),$(!REG_VT_SZ),$($R5)},+
  577.                {InstallDate,$(NoTitle),$(!REG_VT_DWORD),*($(Now),1)}}
  578.     Shell  $(UtilityInf), AddValueList, $($R1), $(NewValueList)
  579.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  580.     Debug-Output "ShellCode error"
  581.     goto ShellCodeError
  582.     endif
  583.     CloseRegKey $($R1)
  584.  
  585.     ; ProductHardwareName = BluTok
  586.     ; NetRuleHardwareBindForm = yes yes container
  587.     ; => TempBindForm = BluTok? yes yes container
  588.     set TempProdName = """"$(ProductHardwareName)$(AdapterNumber)""""
  589.     set TempBindForm = $(TempProdName)$(NetRuleHardwareBindForm)
  590.     set NewValueList = {{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleHardwareType)},+
  591.             {bindform,$(NoTitle),$(!REG_VT_SZ),$(TempBindForm)}, +
  592.             {class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleHardwareClass)}, +
  593.             {InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
  594.     Shell  $(UtilityInf), AddValueList, $(KeyAdapterRules), $(NewValueList)
  595.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  596.     Debug-Output "ShellCode error."
  597.     goto ShellCodeError
  598.     endif
  599.     set RegistryErrorIndex = $($R0)
  600.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  601.     EndWait
  602.     Debug-Output "Resgitry error: add value list."
  603.     CloseRegKey $(KeyParameters)
  604.     CloseRegKey $(KeyAdapterRules)
  605.     goto fatalregistry
  606.     endif
  607.     CloseRegKey $(KeyAdapterRules)
  608.     goto writeparameters
  609.  
  610.     ; Installation converges with configuration here to write card parameters
  611.  
  612. writeparameters = +
  613.     set NewValueList = {{IoBaseAddress,$(NoTitle),$(!REG_VT_DWORD),$(IOBaseAddress)},+
  614.                {BusType,$(NoTitle),$(!REG_VT_DWORD),$(BusInterfaceType)},+
  615.                {BusNumber,$(NoTitle),$(!REG_VT_DWORD),$(BusNumber)},+
  616.                {MediaType,$(NoTitle),$(!REG_VT_DWORD),2}}
  617.  
  618.     ; Add optional parameters
  619.  
  620.     ifint $(MaxFrameSize) != 0
  621.     set NewValueList = >($(NewValueList),+
  622.                {MaxFrameSize,$(NoTitle),$(!REG_VT_DWORD),$(MaxFrameSize)})
  623.     endif
  624.     ifstr $(NetworkAddress) != ""
  625.     set NewValueList = >($(NewValueList),+
  626.                {NetworkAddress,$(NoTitle),$(!REG_VT_SZ),$(NetworkAddress)})
  627.     endif
  628.  
  629.     Shell  $(UtilityInf), AddValueList, $(KeyParameters), $(NewValueList)
  630.  
  631.     ; Delete redundant optional parameters
  632.  
  633.     ifstr $(NetworkAddress) == ""
  634.     ifstr $(oldNetworkAddress) != ""
  635.         DeleteRegValue $(KeyParameters) NetworkAddress
  636.     endif
  637.     endif
  638.  
  639.     ifint $(MaxFrameSize) == 0
  640.     ifint $(oldMaxFrameSize) != 0
  641.         DeleteRegValue $(KeyParameters) MaxFrameSize
  642.     endif
  643.     endif
  644.  
  645.     ; Final tidy up...
  646.  
  647.     ifstr(i) $(!STF_GUI_UNATTENDED) == "YES"
  648.     Shell $(UtilityInf),AddDefaultNetCardParameters,$(KeyParameters)
  649.     endif
  650.  
  651.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  652.     Debug-Output "ShellCode error."
  653.     goto ShellCodeError
  654.     endif
  655.     set RegistryErrorIndex = $($R0)
  656.     CloseRegKey $(KeyParameters)
  657.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  658.     Debug-Output "Registry error: Add value list"
  659.     goto fatalregistry
  660.     endif
  661.     EndWait
  662.     goto successful
  663.  
  664. bindingadapter =+
  665.     set Error = "Binding: Sorry, not yet implemented."
  666.     goto fatal
  667.  
  668. removeadapter = +
  669.     Ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
  670.     Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
  671.         $(ProductSoftwareName)
  672.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  673.         Debug-Output "ShellCode error"
  674.         goto ShellCodeError
  675.     endif
  676.     set RegistryErrorIndex = $($R0)
  677.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  678.         goto fatalregistry
  679.     endif
  680.     else
  681.     Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  682.         $(ProductSoftwareName), $(!NTN_RegBase)
  683.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  684.         Debug-Output "ShellCode error"
  685.         goto ShellCodeError
  686.     endif
  687.     set RegistryErrorIndex = $($R0)
  688.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  689.         goto fatalregistry
  690.     endif
  691.     endif
  692.     goto end
  693.  
  694. UpgradeSoftware = +
  695.     OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) KeyProduct
  696.     Ifstr $(KeyProduct) != $(KeyNull)
  697.     install "Install-Update"
  698.     ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
  699.         goto fatal
  700.     endif
  701.     SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMajorVersion)}
  702.     SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),$(ProductMinorVersion)}
  703.     CloseRegKey $(KeyProduct)
  704.     else
  705.     goto fatalregistry
  706.     endif
  707.     goto end
  708.  
  709. ; From here on we have the exit points -
  710. ;  successful - set CommonStatus to return value e.g. STATUS_SUCCESS
  711. ;  abandon    - set OEM_ABANDON_OPTIONS to list of adapter card id's
  712. ;                 e.g. { BluTok01 }
  713. ;               set OEM_ABANDON_SOFTWARE to TRUE/FALSE
  714. ;               set CommonStatus to return value
  715. ;  warning    - set Error to a string to be displayed in message box
  716. ;               set to to "Continue" destination
  717. ;               set from to "Cancel" destination
  718. ;               set CommonStatus for "Exit"
  719. ;  nonfatalinfo/nonfatal -
  720. ;               set Error (you don't have to, but then you get the registry
  721. ;                 error SETUP_FAIL)
  722. ;               set from to "OK" destination
  723. ;               set CommonStatus for nonfatal for "Cancel" destination
  724. ; fatalregistry -
  725. ;               set RegistryErrorIndex
  726. ;               set OEM_ABANDON_ON to TRUE/FALSE
  727. ; fataldetect - set OEM_ABANDON_ON to TRUE/FALSE
  728. ; fatal       - set Error optionally
  729. ;             - set OEM_ABANDON_ON to TRUE/FALSE
  730. ;             - set CommonStatus
  731. ; ShellCodeError -
  732. ;               set OEM_ABANDON_ON to TRUE/FALSE
  733.  
  734. successful = +
  735.     goto end
  736.  
  737. abandon = +
  738.     ForListDo $(OEM_ABANDON_OPTIONS)
  739.     Shell $(UtilityInf), RemoveHardwareComponent, $(Manufacturer), +
  740.         $(ProductSoftwareName), $($)
  741.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  742.         Debug-Output "ShellCode error"
  743.         goto ShellCodeError
  744.     endif
  745.     set RegistryErrorIndex = $($R0)
  746.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  747.         goto fatalregistry
  748.     endif
  749.     EndForListDo
  750.     Ifstr(i) $(OEM_ABANDON_SOFTWARE) == TRUE
  751.     Shell $(UtilityInf), RemoveSoftwareComponent, $(Manufacturer), +
  752.         $(ProductSoftwareName), FALSE
  753.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  754.         Debug-Output "ShellCode error"
  755.         goto ShellCodeError
  756.     endif
  757.     set RegistryErrorIndex = $($R0)
  758.     Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
  759.         goto fatalregistry
  760.     endif
  761.     endif
  762.     goto end
  763.  
  764. warning = +
  765.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
  766.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  767.     goto ShellCodeError
  768.     endif
  769.     ifstr(i) $($R1) == "OK"
  770.     goto $(to)
  771.     else-ifstr(i) $($R1) == "CANCEL"
  772.     goto $(from)
  773.     else
  774.     goto "end"
  775.     endif
  776.  
  777. nonfatalinfo = +
  778.     Set CommonStatus = STATUS_USERCANCEL
  779.     Set Severity = STATUS
  780.     goto nonfatalmsg
  781.  
  782. nonfatal = +
  783.     Set Severity = NONFATAL
  784.     goto nonfatalmsg
  785.  
  786. nonfatalmsg = +
  787.     ifstr(i) $(Error) == ""
  788.     Set Severity = NONFATAL
  789.     Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  790.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  791.         goto ShellCodeError
  792.     endif
  793.     set Error = $($R0)
  794.     endif
  795.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
  796.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  797.     goto ShellCodeError
  798.     endif
  799.     ifstr(i) $($R1) == "OK"
  800.     goto $(from)
  801.     else
  802.     goto "end"
  803.     endif
  804.  
  805. fatalregistry = +
  806.     Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
  807.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  808.     goto ShellCodeError
  809.     endif
  810.     set Error = $($R0)
  811.     goto fatal
  812.  
  813. fataldetect = +
  814.     Shell $(UtilityInf),RegistryErrorString,CANNOT_DETECT
  815.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  816.     Debug-Output "ShellCode error: cannot get an error string."
  817.     goto ShellCodeError
  818.     endif
  819.     set Error = $($R0)
  820.     Goto fatal
  821.  
  822. fatal = +
  823.     ifstr(i) $(Error) == ""
  824.     Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
  825.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  826.         goto ShellCodeError
  827.     endif
  828.     set Error = $($R0)
  829.     endif
  830.     Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
  831.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  832.     goto ShellCodeError
  833.     endif
  834.     goto setfailed
  835.  
  836. ShellCodeError = +
  837.     set DlgType      = "MessageBox"
  838.     set STF_MB_TITLE = $(ShellCodeErrorTitle)
  839.     set STF_MB_TEXT  = $(ShellCodeErrorText)
  840.     set STF_MB_TYPE  = 1
  841.     set STF_MB_ICON  = 3
  842.     set STF_MB_DEF   = 1
  843.     ui start "Error Message"
  844.     goto setfailed
  845.  
  846. setfailed = +
  847.     set CommonStatus = STATUS_FAILED
  848.     ifstr(i) $(OEM_ABANDON_ON) == TRUE
  849.     set OEM_ABANDON_ON = FALSE
  850.     goto abandon
  851.     endif
  852.     goto end
  853.  
  854. end = +
  855.     ; This is the only safe place to free the library handle without rewriting
  856.     ; all the error handling code...
  857.  
  858.     ifstr $(BluHandle) != $(KeyNull)
  859.     FreeLibrary $(BluHandle)
  860.     endif
  861.  
  862.     goto term
  863.  
  864. term = +
  865.     Return $(CommonStatus)
  866.  
  867.  
  868. ;/****************************************************************************/
  869. ;/* [InstallOption] Support sections                                         */
  870. ;/****************************************************************************/
  871.  
  872. [GeneralConstants]
  873.     from                = ""
  874.     to                  = ""
  875.     retaddr             = ""
  876.     KeyNull             = ""
  877.     StringNull          = ""
  878.     MAXIMUM_ALLOWED     = 33554432
  879.     RegistryErrorIndex  = NO_ERROR
  880.     KeyProduct          = ""
  881.     KeyParameters       = ""
  882.     TRUE                = 1
  883.     FALSE               = 0
  884.     NoTitle             = 0
  885.     ExitState           = "Active"
  886.     OldVersionExisted   = $(FALSE)
  887.     DriverPath          = $(!STF_NTPATH)\drivers
  888.  
  889. [FileConstants]
  890.     UtilityInf              = "UTILITY.INF"
  891.     ParamInf                = "NCPARAM.INF"
  892.     subroutineinf           = "SUBROUTN.INF"
  893.     SoftwareType            = "driver"
  894.     NetEventDLL             = "%SystemRoot%\System32\netevent.dll"
  895.     IoLogMsgDLL             = "%SystemRoot%\System32\IoLogMsg.dll"
  896.     Manufacturer            = "Madge"
  897.     ProductMajorVersion     = "3"
  898.     ProductMinorVersion     = "5"
  899.     ProductVersion          = $(ProductMajorVersion)"."$(ProductMinorVersion)
  900.     ProductSoftwareName     = "BluTok"
  901.     ProductSoftwareImagePath = "\SystemRoot\System32\drivers\BluTok.sys"
  902.     NetRuleSoftwareType     = "blutokSys ndisDriver blutokDriver"
  903.     NetRuleSoftwareUse      = $(SoftwareType)
  904.     NetRuleSoftwareBindForm = """BluTokSys"" yes no container"
  905.     NetRuleSoftwareClass    = {"blutokDriver basic"}
  906.     ProductHardwareName     = "BluTok"
  907.     NetRuleHardwareType     = "blutok blutokAdapter"
  908.     NetRuleHardwareBindForm = " yes yes container"
  909.     NetRuleHardwareClass    = {"blutokAdapter basic"}
  910.     ProductKeyName  = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\"$(ProductSoftwareName)"\CurrentVersion"
  911.     ParamKeyName    = $(!NTN_ServiceBase)"\"$(ProductHardwareName)"\Parameters"
  912.     BLUE_HELP_BASE  = 6000
  913.     BLUE_HELP_LIMIT = 6000
  914.  
  915. [date]
  916.     Now = {} ? $(!LIBHANDLE) GetSystemDate
  917.  
  918. [Install-Option]
  919.     set STF_VITAL = ""
  920.     ifstr(i) $(AddCopy) == "YES"
  921.     AddSectionFilesToCopyList Files-$(Option) +
  922.         $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  923.     AddSectionFilesToCopyList Files-$(Option)-Dll +
  924.         $(SrcDir) $(!STF_WINDOWSSYSPATH)
  925.     endif
  926.     ifstr(i) $(DoCopy) == "YES"
  927.        set !STF_NCPA_FLUSH_COPYLIST = TRUE
  928.        CopyFilesInCopyList
  929.     endif
  930.     ifstr(i) $(DoConfig) == "YES"
  931.     endif
  932.     Exit
  933.  
  934. [Install-Update]
  935.     set STF_VITAL        = ""
  936.     set STF_OVERWRITE    = "VERIFYSOURCEOLDER"
  937.     AddSectionFilesToCopyList Files-$(Option) +
  938.     $(SrcDir) $(!STF_WINDOWSSYSPATH)\drivers
  939.     AddSectionFilesToCopyList Files-$(Option)-Dll +
  940.     $(SrcDir) $(!STF_WINDOWSSYSPATH)
  941.     CopyFilesInCopyList
  942.     exit
  943.  
  944. ;/****************************************************************************/
  945. ;/* [Source Media Descriptions]                                              */
  946. ;/****************************************************************************/
  947.  
  948. [Source Media Descriptions]
  949.      1 = "Madge Blue+ Installation Disk 2"
  950.  
  951. [Signature]
  952.     FileType = MICROSOFT_DRVLIB_FILE
  953. [GetSignature]
  954.     read-syms Signature
  955.     return $(FileType)
  956.  
  957. [Files-BluTok]
  958.     1, BLUTOK.SYS, SIZE=9999
  959.  
  960. [Files-BluTok-Dll]
  961.     1, BLUTOK.DLL, SIZE=9999
  962.     1, BLUTOK.HLP, SIZE=9999
  963.  
  964. ;/****************************************************************************/
  965. ;/* Language dependent parameters                                            */
  966. ;/****************************************************************************/
  967.  
  968. ; These are the allowed languages, followed by the relevant sections for each.
  969.  
  970. [LanguagesSupported]
  971.     ENG
  972.  
  973. ;/****************************************************************************/
  974. ;/* [ReturnOptions] section language support                                 */
  975. ;/****************************************************************************/
  976.  
  977. [OptionsTextENG]
  978.     BLUTOK     = "Madge Blue+ Token Ring Adapter"
  979.  
  980. ;/****************************************************************************/
  981. ;/* [InstallOption] section language support                                 */
  982. ;/****************************************************************************/
  983.  
  984. [FileConstantsENG]
  985.     ProCaption   = "Windows NT Setup"
  986.     ProCancel    = "Cancel"
  987.     ProCancelMsg = "Windows NT Networking is not correctly installed.  "+
  988.            "Are you sure you want to cancel copying files?"
  989.     ProCancelCap = "Network Setup Message"
  990.     ProText1     = "Copying:"
  991.     ProText2     = "To:"
  992.     FunctionTitle               = "Madge Blue+ Adapter Card Setup"
  993.     ProductSoftwareDescription  = "Madge Blue+ Adapter Driver"
  994.     ProductHardwareDescription  = "Madge Blue+ Adapter"
  995.     ProductSoftwareTitle        = "Madge Blue+ Adapter Driver"
  996.     ProductHardwareTitle        = "Madge Blue+ Adapter"
  997.     ShellCodeErrorTitle         = "Error: "$(FunctionTitle)
  998.     ShellCodeErrorText          = "Shell Code Error."
  999.  
  1000. [DialogConstantsENG]
  1001.     Help        = "&Help"
  1002.     Exit        = "Cancel"
  1003.     OK          = "OK"
  1004.     HelpContext = ""
  1005.     Continue    = "Continue"
  1006.     Cancel      = "Cancel"
  1007.  
  1008. [FileDependentDlgENG]
  1009.     Group1          = "I/O Port Base Address"
  1010.     Radio1          = "&Primary"
  1011.     Radio2          = "&Secondary"
  1012.     Edit1Label      = "&Network Address:"
  1013.     Edit2Label      = "&Max Frame Size:"
  1014.     DlgType         = "RadioCombination"
  1015.     DlgTemplate     = "BLUE_TOKEN"
  1016.     Caption         = $(FunctionTitle)
  1017.     ComboListItemsIn = {}
  1018.     ComboListItemsOut = {}
  1019.     EditTextLim     = {17, 5}
  1020.     EditTextIn      = {$(NetworkAddress), $(MaxFrameSize)}
  1021.     OptionsGreyed   = {}
  1022.     HelpContext     = $(BLUE_HELP_BASE)
  1023.     RCCtlFocusOn    = 403
  1024.  
  1025. ;/****************************************************************************/
  1026. ;/* End of OEMSETUP.INF                                                      */
  1027. ;/****************************************************************************/
  1028.